<

Flutter モジュールを Android プロジェクトに統合する

Flutter は既存の Android に組み込むことができます アプリケーションを部分的に、ソースコードとして Gradle サブプロジェクトまたは AAR として。

統合フローは Android Studio を使用して実行できます。 IDE と flutterプラグインまたは手動で。

Android Studioの使用

Android Studio IDE は、統合するための便利な方法です。 Flutter モジュールが自動的に作成されます。 Android Studioを使用すると、 Android コードと Flutter コードの両方を共同編集できます 同じプロジェクト内で。通常の使用を継続することもできます Dart コードなどの IntelliJ Flutter プラグイン機能 完了、ホットリロード、ウィジェットインスペクタ。

Android Studio でのアプリへの追加フローは、 Android Studio 3.6 バージョン 42 以降 flutterプラグインインテリJ用。 Android Studio 統合のみ ソースコード Gradle サブプロジェクトを使用した統合をサポートします。 AAR を使用するのではなく。詳細については、以下を参照してください 区別。

の使用ファイル > 新規 > 新しいモジュール…のメニュー 既存の Android プロジェクトの Android Studio、 新しい Flutter モジュールを作成して統合するか、 または、以前に作成した既存の Flutter モジュールを選択します。

新しいモジュールを作成する場合、ウィザードを使用して次のことを行うことができます。 モジュール名、場所などを選択します。

Android Studio プラグインは、 Flutter モジュールを依存関係として追加する Android プロジェクト、 これでアプリをビルドする準備が整いました。

これで、アプリに Flutter モジュールが依存関係として含まれるようになりました。 にジャンプできます。Android アプリに Flutter 画面を追加する次の手順に進みます。

手動統合

Flutter モジュールを既存の Android アプリと統合するには Flutter の Android Studio プラグインを使用せずに手動で、 次の手順を実行します:

Flutterモジュールを作成する

既存の Android アプリがあると仮定します。some/path/MyApp、そして flutterが欲しいということ 兄弟としてプロジェクトを作成します。

$ cd some/path/
$ flutter create -t module --org com.example flutter_module

これにより、some/path/flutter_module/ flutterモジュールプロジェクト 始めるための Dart コードと、.android/隠しサブフォルダー。の.androidフォルダには ベアボーンの実行に役立つ Android プロジェクト Flutter モジュールのスタンドアロン バージョンflutter runまた、Flutter のブートストラップを支援するラッパーでもあります。 module は埋め込み可能な Android ライブラリです。

Java 11の要件

Flutter Android エンジンは Java 11 機能を使用します。

Flutter モジュール プロジェクトに接続する前に ホスト Android アプリに接続するには、ホスト Android が アプリは、次のソース互換性を宣言します アプリのbuild.gradleファイルの下にあるandroid { }次のようなブロック:

MyApp/app/build.gradle
android {
  //...
  compileOptions {
    sourceCompatibility 11
    targetCompatibility 11
  }
}

Flutter モジュールを依存関係として追加します

次に、Flutter モジュールを依存関係として追加します。 Gradle の既存のアプリ。これを実現するには 2 つの方法があります。 AAR メカニズムは、汎用 Android AAR を次のように作成します。 Flutter モジュールをパッケージ化する仲介者。 これは、ダウンストリームのアプリビルダーがそうでない場合に適しています。 Flutter SDKをインストールしたいと考えています。しかし、 頻繁にビルドする場合は、ビルド ステップが 1 つ追加されます。

ソースコードのサブプロジェクトメカニズムは便利です ワンクリックでビルドプロセスを実行できますが、Flutter SDK が必要です。 これは、Android Studio IDE プラグインで使用されるメカニズムです。

オプション A - Android アーカイブ (AAR) に依存する

このオプションは、Flutter ライブラリを汎用ローカルとしてパッケージ化します。 AAR と POM アーティファクトで構成される Maven リポジトリ。 このオプションを使用すると、チームはホスト アプリを構築する必要がなくなります。 Flutter SDKのインストール。その後、 ローカルまたはリモート リポジトリからのアーティファクト。

Flutter モジュールを次の場所に構築したと仮定します。some/path/flutter_moduleを選択し、次を実行します。

$ cd some/path/flutter_module
$ flutter build aar

次に、画面上の指示に従って統合します。

より具体的には、このコマンドは (デフォルトでは、すべてのデバッグ/プロファイル/リリース モード) あるローカルリポジトリ、次のファイル:

build/host/outputs/repo
└── com
    └── example
        └── flutter_module
            ├── flutter_release
            │   ├── 1.0
            │   │   ├── flutter_release-1.0.aar
            │   │   ├── flutter_release-1.0.aar.md5
            │   │   ├── flutter_release-1.0.aar.sha1
            │   │   ├── flutter_release-1.0.pom
            │   │   ├── flutter_release-1.0.pom.md5
            │   │   └── flutter_release-1.0.pom.sha1
            │   ├── maven-metadata.xml
            │   ├── maven-metadata.xml.md5
            │   └── maven-metadata.xml.sha1
            ├── flutter_profile
            │   ├── ...
            └── flutter_debug
                └── ...

AAR に依存するには、ホスト アプリが次の機能を備えている必要があります。 これらのファイルを見つけるには。

そのためには、編集しますapp/build.gradleホストアプリで ローカル リポジトリと依存関係が含まれるようにします。

MyApp/app/build.gradle
android {
  // ...
}

repositories {
  maven {
    url 'some/path/flutter_module/build/host/outputs/repo'
    // This is relative to the location of the build.gradle file
    // if using a relative path.
  }
  maven {
    url 'https://storage.googleapis.com/download.flutter.io'
  }
}

dependencies {
  // ...
  debugImplementation 'com.example.flutter_module:flutter_debug:1.0'
  profileImplementation 'com.example.flutter_module:flutter_profile:1.0'
  releaseImplementation 'com.example.flutter_module:flutter_release:1.0'
}

これで、アプリに Flutter モジュールが依存関係として含まれるようになりました。 次の手順に従うことができます。Android アプリに Flutter 画面を追加する

オプション B - モジュールのソース コードに依存する

このオプションを使用すると、両方のデバイスでワンステップのビルドが可能になります。 Android プロジェクトと Flutter プロジェクト。このオプションは 両方の部分を同時に作業する場合に便利です 迅速に反復しますが、チームは ホスト アプリを構築するための Flutter SDK。

Flutter モジュールをホスト アプリのサブプロジェクトとして含めます。settings.gradle。この例では次のことを前提としていますflutter_moduleMyApp同じディレクトリに存在する

MyApp/settings.gradle
// Include the host app project.
include ':app'                                    // assumed existing content
setBinding(new Binding([gradle: this]))                                // new
evaluate(new File(                                                     // new
  settingsDir.parentFile,                                              // new
  'flutter_module/.android/include_flutter.groovy'                         // new
))                                                                     // new

バインディングとスクリプトの評価により、Flutter が可能になります。 モジュールからincludeそれ自体(として):flutter) および任意の モジュールで使用される Flutter プラグイン (:package_info:video_player、など)の評価コンテキストで あなたのsettings.gradle

を紹介しますimplementationFlutterへの依存性 アプリのモジュール:

MyApp/app/build.gradle
dependencies {
  implementation project(':flutter')
}

これで、アプリに Flutter モジュールが依存関係として含まれるようになりました。 次の手順に従うことができます。Android アプリに Flutter 画面を追加する